package com.bzkj.basicinfo.mapper.receive;

import com.bzkj.basicinfo.domain.receive.WmsRejectRecordEntity;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * WMS拒收记录Mapper接口
 *
 *@author lixinyu
 * @date 2025-10-22
 */
public interface WmsRejectRecordMapper {

    /**
     * 查询拒收记录列表
     *
     * @param entity 拒收记录
     * @return 拒收记录集合
     */
    List<WmsRejectRecordEntity> selectRejectRecordList(WmsRejectRecordEntity entity);

    /**
     * 根据ID查询拒收记录
     *
     * @param id 拒收记录ID
     * @return 拒收记录
     */
    WmsRejectRecordEntity selectRejectRecordById(@Param("id") Long id);

    /**
     * 根据拒收单号查询拒收记录
     *
     * @param rejectNo 拒收单号
     * @return 拒收记录
     */
    WmsRejectRecordEntity selectRejectRecordByNo(@Param("rejectNo") String rejectNo);

    /**
     * 根据收货单ID查询拒收记录
     *
     * @param receiveOrderId 收货单ID
     * @return 拒收记录集合
     */
    List<WmsRejectRecordEntity> selectRejectRecordByOrderId(@Param("receiveOrderId") Long receiveOrderId);

    /**
     * 新增拒收记录
     *
     * @param entity 拒收记录
     * @return 结果
     */
    int insertRejectRecord(WmsRejectRecordEntity entity);

    /**
     * 修改拒收记录
     *
     * @param entity 拒收记录
     * @return 结果
     */
    int updateRejectRecord(WmsRejectRecordEntity entity);

    /**
     * 删除拒收记录
     *
     * @param id 拒收记录ID
     * @return 结果
     */
    int deleteRejectRecordById(@Param("id") Long id);

    /**
     * 批量删除拒收记录
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    int deleteRejectRecordByIds(@Param("ids") Long[] ids);

    /**
     * 更新拒收处理状态
     *
     * @param id 拒收记录ID
     * @param handleStatus 处理状态
     * @param handleMethod 处理方式
     * @param handleResult 处理结果
     * @param handler 处理人
     * @return 结果
     */
    int updateRejectHandleStatus(@Param("id") Long id,
                                 @Param("handleStatus") String handleStatus,
                                 @Param("handleMethod") String handleMethod,
                                 @Param("handleResult") String handleResult,
                                 @Param("handler") String handler);
}
